כשאני רוצה להציג את מספר המוצרים שנמצאים בסל הקניות, אני מקבל שגיאה כזו:

Warning: explode() expects parameter 2 to be string, array given in


הקוד:

function displayNumber() {
        $cartid = $_SESSION['cartid'];
        if (!$cartid) {
                return '<p>You have no items in your shopping cart.</p>';
        } else {
                // Parse the cart session variable
                $items = explode(',',$cartid);
                $s = (count($items) > 1) ? 's':'';
                return '<p>You have <a href="viewCart.php">'.count($items).' item'.$s.' in your shopping cart.</a></p>';
        }
}

16 תשובות

avatar ענה JBStyle ב 17 ליולי 2012 #

תעשה dump לערך הנ"ל של הסשן תגיד לי מה זה מחזיר לך. כי השגיאה אומרת שהמשתנה שהתקבל הוא מערך ..

avatar ענה dinamit ב 17 ליולי 2012 #

אתה מתכוון כנראה ל-var_dump. נכון?

התוצאה:

array
  0 =>
    array
      'item_id' => string '11' (length=2)
      'quantity' => string '99' (length=2)
  1 =>
    array
      'item_id' => string '14' (length=2)
      'quantity' => string '5' (length=1)

avatar ענה JBStyle ב 17 ליולי 2012 #

התשובה לפניך ..
המשתנה הוא מערך דו מימדי ~

avatar ענה dinamit ב 17 ליולי 2012 #

אוקיי. אז מה אני צריך לעשות במצב הזה?
אני אעריך מאוד אם תסביר לי

avatar ענה JBStyle ב 17 ליולי 2012 #

אתה רוצה לעשות את הפעולה הנ"ל על כל אחד מאיברי המערך ?
אם כן תוכל לרוץ פשוט על כל האיברים ולבצע את מה שרצית .

avatar ענה dinamit ב 17 ליולי 2012 #

תוכל בבקשה להדגים לי את זה?
אני לא כ"כ מבין למה אתה מתכוון "לרוץ פשוט על כל האיברים".
ואיך אני עושה את זה?

avatar ענה JBStyle ב 17 ליולי 2012 #

בעצם סליחה לא שמתי לב שהמשתנה הנ"ל מכיל את החפצים עצמם חח. פשוט תעיף את הexplode ותעשה ישר count ל$cartid ~

avatar ענה dinamit ב 17 ליולי 2012 #

לא. אני יודע למה אתה מתכוון.
אם אני עושה:

count($cartid)


אז הוא מציג מספר שמייצג כמה סוגי מוצרים נמצאים כעת בסל ולא מכליל בתוצאה מוצרים כפולים ( כלומר אם הוספתי לכמות של מוצר מסוים עוד).

לדוגמא, שתבין יותר טוב, אם הוספתי לסל מוצר A ואח"כ הוספתי מוצר B ואח"כ מוצר C ואז עוד פעם מוצר B אז הוא יציג את המספר: 3. אבל למעשה יש 4 מוצרים.

avatar ענה dinamit ב 17 ליולי 2012 #

avatar ענה JBStyle ב 17 ליולי 2012 #

אה, סליחה לא שמתי לב, אז ככה:

function displayNumber() {
    $cartid = $_SESSION['cartid'];
   
    if ( ! $cartid){
        return '<p>You have no items in your shopping cart.</p>';
    }
    else{
        $items = 0;
        foreach( $cartid AS $key => $val )
        {
            $items += $val['quantity'];
        }
       
        $s = (count($items) > 1) ? 's' : '';
        return '<p>You have <a href="viewCart.php">'.count($items).' item'.$s.' in your shopping cart.</a></p>';
    }
}

avatar ענה dinamit ב 17 ליולי 2012 #

ממממ... עדיין לא עובד... איך מה שעשית היה אמור לגרום לזה לפעול?

avatar ענה JBStyle ב 17 ליולי 2012 #

אויש סורי חח שכחתי להעיף במשתנה s את הcount. תוריד את הפונקציה ~

avatar ענה JBStyle ב 17 ליולי 2012 #

וכמו כן בcount(items) כשאתה מדפיס ~

avatar ענה dinamit ב 17 ליולי 2012 #

מעולה! תודה רבה זה עובד כמו peace of cake :)

avatar ענה dinamit ב 18 ליולי 2012 #

רק תוכל בבקשה להסביר לי איך מה שעשית גרם לזה לעבוד?

avatar ענה JBStyle ב 18 ליולי 2012 #

רצתי על כל איבר מהסשנים הנ"ל והוספתי את ערך הquantity שלו למשתנה שהגדרתי מראש שמכיל את כמות המוצרים הכללית .